package com.bibrApp.difu.dialog;

import android.app.Activity;
import android.content.Context;
import android.view.View;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.google.android.material.tabs.TabLayout;

import java.lang.reflect.Field;

/**
 * @author dj
 * @date 2019/8/13
 *	获取屏幕分辨率
 */
public class ScreenUtils {
	/**
     * @param context
     * @return 返回屏幕的 宽 高
     */
    public static int[] getScreenDispaly(Context context) {
		WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
		int width = windowManager.getDefaultDisplay().getWidth();// 手机屏幕的宽度
		int height = windowManager.getDefaultDisplay().getHeight();// 手机屏幕的高度
		int result[] = { width, height };
		return result;
	}
	/**
	 * 设置添加屏幕的背景透明度
	 *
	 * @param bgAlpha
	 *            屏幕透明度0.0-1.0 1表示完全不透明
	 */
	public static void setBackgroundAlpha(Context mContext , float bgAlpha) {
		WindowManager.LayoutParams lp = ((Activity) mContext).getWindow()
				.getAttributes();
		lp.alpha = bgAlpha;
		((Activity) mContext).getWindow().setAttributes(lp);
	}

	/**
	 * 根据手机的分辨率从 dp 的单位 转成为 px(像素)
	 */
	public static int dip2px(Context context, float dpValue) {
		final float scale = context.getResources().getDisplayMetrics().density;
		return (int) (dpValue * scale + 0.5f);
	}

	/**
	 * 根据手机的分辨率从 px(像素) 的单位 转成为 dp
	 */
	public static int px2dip(Context context, float pxValue) {
		final float scale = context.getResources().getDisplayMetrics().density;
		return (int) (pxValue / scale + 0.5f);
	}

	public static void reflex(final TabLayout tabLayout){
		//了解源码得知 线的宽度是根据 tabView的宽度来设置的
		tabLayout.post(new Runnable() {
			@Override
			public void run() {
				try {
					//拿到tabLayout的mTabStrip属性
					LinearLayout mTabStrip = (LinearLayout) tabLayout.getChildAt(0);

					int dp10 = dip2px(tabLayout.getContext(), 10);

					for (int i = 0; i < mTabStrip.getChildCount(); i++) {
						View tabView = mTabStrip.getChildAt(i);

						//拿到tabView的mTextView属性  tab的字数不固定一定用反射取mTextView
						Field mTextViewField = tabView.getClass().getDeclaredField("text1");
						mTextViewField.setAccessible(true);

						TextView mTextView = (TextView) mTextViewField.get(tabView);

						tabView.setPadding(0, 0, 0, 0);

						//因为我想要的效果是   字多宽线就多宽，所以测量mTextView的宽度
						int width = 0;
//                        width = mTextView.getWidth();//动态获取
						width = dip2px(tabLayout.getContext(), 25);//固定写死宽度
						if (width == 0) {
							mTextView.measure(0, 0);
							width = mTextView.getMeasuredWidth();
						}

						//设置tab左右间距为10dp  注意这里不能使用Padding 因为源码中线的宽度是根据 tabView的宽度来设置的
						LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) tabView.getLayoutParams();
						params.width = width ;
						params.leftMargin = dp10;
						params.rightMargin = dp10;
						tabView.setLayoutParams(params);

						tabView.invalidate();
					}

				} catch (NoSuchFieldException e) {
					e.printStackTrace();
				} catch (IllegalAccessException e) {
					e.printStackTrace();
				}
			}
		});

	}

}